package catherineliu.main.singleton.lazy_man;

/**
 * 项目：DesignPatternsDemo
 * 文件描述：懒汉式，线程安全
 * 作者：ljj
 * 创建时间：2020/11/25
 */
public class SingletonLazyManSafe {

    /**
     * 是否 Lazy 初始化：是
     * 是否多线程安全：是
     * 实现难度：易
     * 第一次调用才初始化，避免内存浪费。但必须加锁 synchronized 才能保证单例，但加锁会影响效率。
     * getInstance() 的性能对应用程序不是很关键（该方法使用不太频繁）
     */
    private static SingletonLazyManSafe instance;
    private SingletonLazyManSafe() {}

    public static synchronized SingletonLazyManSafe getInstance() {
        if (instance == null) {
            instance = new SingletonLazyManSafe();
        }
        return instance;
    }

}
